Skip to content

Agentic AI Engineering setup - Incremental changes accumulated over-time - #6

Open
lakshyads05 wants to merge 45 commits into
lakshyads:mainfrom
lakshyads05:feature/agentic-engineering-specific
Open

Agentic AI Engineering setup - Incremental changes accumulated over-time#6
lakshyads05 wants to merge 45 commits into
lakshyads:mainfrom
lakshyads05:feature/agentic-engineering-specific

Conversation

@lakshyads05

@lakshyads05 lakshyads05 commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

About

This PR would contain all initial and incremental the changes to my local setup as I adopt newer workflow patterns as part of my Agentic AI Engineering journey.

The initial setup will be heavily inspired by Kun Chen and his L8 Principal's Agentic Engineering Workflow

I will try to modify and evolve this setup naturally as I mature my own way of working (now heavily centered around using agents for mostly everything related to dev and research).

lakshyads05 and others added 16 commits July 4, 2026 17:31
…ux, neovim, opensuperwhisper

Removed 1Password and SuperWhisper from the setup; added opencode,
wezterm, tmux, neovim, and opensuperwhisper (open-source SuperWhisper
replacement) across Brewfile, setup.sh, verify.sh, docs/inventory.md,
and README.md per the repo's add/remove tool checklist.
Consolidates ghostty, git, linearmouse, and starship configs under
configs/ for consistency, and adds a wezterm config alongside the
existing terminal emulator options.
Matches JetBrainsMono Nerd Font at size 14 and mirrors Ghostty's
custom split creation/navigation/zoom keybinds for consistent
muscle memory across both terminals.
Replace the imperative Brewfile/setup.sh bootstrap with a declarative flake, move live configs under home/, and update docs plus verify for the new rebuild workflow.

Co-authored-by: Cursor <cursoragent@cursor.com>
font-jetbrains-mono-nerd-font and font-fira-code-nerd-font were
declared as Homebrew casks here while home.nix already installs the
same fonts natively via nix (nerd-fonts.jetbrains-mono,
nerd-fonts.fira-code). Drop the Homebrew duplicates so fonts have a
single source of truth per CLAUDE.md section 2.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
lt was changed to full-depth eza tree listing with lt2 carved out as
the capped-at-2-levels variant (former lt default), but the intent
was undocumented. Add a one-line comment so the split doesn't need to
be reverse-engineered from history.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
home.nix declares mkOutOfStoreSymlink entries for .config/herdr and
Documents/workspace/my-matrix/a-utils/cheatsheets, but verify.sh had
no corresponding checks, contrary to CLAUDE.md section 6 ("new
symlink added in home.nix -> add a check_resolves_to_repo call").

herdr uses the existing check_resolves_to_repo (hard fail if
missing), since ~/.config/herdr is guaranteed once home-manager
applies. The cheatsheets symlink target lives under an external
workspace (Documents/workspace/my-matrix) that isn't part of this
repo and won't exist on every machine it's cloned onto, so hard
failing there would produce a false-negative red X on an otherwise
healthy setup. Added a new check_resolves_to_repo_optional helper
that mirrors check_resolves_to_repo but downgrades "target missing"
to a warn instead of a fail, and used it only for the cheatsheets
check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…idote era

Both are confirmed dead residue from the pre-migration Homebrew +
antidote setup. The real ~/.zshrc is now home-manager-generated from
home.nix's programs.zsh block; antidote is retired. Neither file is
referenced by bootstrap.sh, rebuild.sh, or home.nix, and
docs/inventory.md already asserted both no longer exist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
modern-cli-cheatsheet.md claimed configs live in configs/ or the
root .zshrc — neither exists anymore post-migration (see prior
commit). Configs now live under home/.config/* (edit-in-place
symlinks) or are home-manager-generated from home.nix's
programs.zsh/programs.starship blocks.

homebrew-cheatsheet.md's example team Brewfile still listed
brew "antidote", which is retired and could mislead a reader copying
the example.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
configs/gitconfig existed solely to carry delta/merge/pager config,
wired into ~/.gitconfig via bootstrap.sh's include.path, because
home-manager's programs.git was believed to make ~/.gitconfig an
immutable Nix-store symlink. Verified against the exact home-manager
revision pinned in flake.lock (af2beae5f0fae0a4310cc0e6aef2572f56090353,
release-26.05): programs.git's generated config actually goes to the
XDG path ~/.config/git/config, never touching ~/.gitconfig. That
justification was stale.

- home.nix: enable programs.git with the delta/merge settings
  migrated in declaratively (core.pager, interactive.diffFilter,
  delta.navigate/light/line-numbers/side-by-side,
  merge.conflictStyle). Replaced the stale "deliberately NOT enabled"
  comment with one explaining the real XDG mechanism.
- bootstrap.sh: removed the now-unnecessary include.path wiring block
  (git already reads ~/.config/git/config alongside ~/.gitconfig with
  no explicit include needed). Updated nearby comments; identity
  prompting (default branch, user.name, user.email) is untouched.
- Deleted configs/gitconfig and the now-empty configs/ directory,
  aligning with this repo's established pattern that everything
  home-related lives under home/ or is declared in home.nix, not in
  a stray top-level folder.
- verify.sh: replaced the two checks tied to the old include.path
  mechanism with a single check that ~/.config/git/config exists and
  contains the delta pager config.
- Updated README.md (layout table + repo tree), docs/inventory.md,
  docs/cheatsheets/modern-cli-cheatsheet.md, and AGENTS.md (the
  CLAUDE.md-symlinked source file) to describe the new flow: identity
  stays bootstrap.sh-driven via mutable ~/.gitconfig; pager/merge/
  delta config is now nix-managed via home.nix, applied to the XDG
  path.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
home-manager's nix ini renderer quotes string values, so the generated
~/.config/git/config has `pager = "delta"`, not `pager = delta`. Only
caught by actually running verify.sh post-rebuild, not by nix flake
check or a dry-run build.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Documents herdr's session/workspace/tab/pane model, this repo's
tmux-style keybindings, worktree integration, agent detection, and
socket API for scripting multi-agent workflows.
herdr already provides tmux-style session/pane management with
first-class AI agent integration, making the standalone tmux install
redundant.
…istency

.tool-versions lived at the repo root, but this repo has no language
tooling of its own — the root placement gave it no functional edge
over living under home/, which already holds every other edit-in-place
file that home-manager symlinks into ~. Move it there and repoint the
home.nix symlink, bootstrap.sh's plugin registration, verify.sh's
version check, and the README's repo layout/customization docs.
@lakshyads05
lakshyads05 force-pushed the feature/agentic-engineering-specific branch from fc3e8d5 to 343da9a Compare July 12, 2026 01:55
lakshyads05 and others added 8 commits July 13, 2026 23:17
Bind open_worktree/remove_worktree in config.toml, document them and
the worktrees.directory override in the cheatsheet, and extend
.gitignore to catch herdr's timestamped session.json.bak-* backups.
Move the statusline one-liner into ~/.claude/statusline-command.sh
and default effortLevel to high.
Cursor ships its own self-updating installer for the `agent` CLI
rather than a Nix/Homebrew package, so wire it into bootstrap.sh
directly (gated on `command -v agent` for idempotency) and add a
verify.sh check alongside the other AI coding CLIs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fix herdr's global worktrees.directory override, which mixed agent
worktrees with real project repos, and add a wtnew shell function that
creates worktrees as siblings of a project's .bare/ dir (discovering the
project root and default base branch automatically) with an optional
herdr session attached.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Port the /smell code-smell review checklist (Clean Code + Gang of Four +
Python-specific catalog, severity-ranked findings) into the open SKILL.md
format Claude Code, Codex, and Cursor all read, so it's usable from any
of them. One canonical copy lives in home/skills/smell/, symlinked into
each tool's skills directory (plus ~/.agents/skills for consistency with
this machine's existing personal skill registry).
Move the inline settings.json statusline command into
home/.claude/statusline-command.sh, symlinked via home-manager, and
add the model's context window size (compact form, e.g. 200k/1M)
next to the effort level.
Extracts the Commit messages and Pull request descriptions sections
from home/AGENTS.md into dedicated shared skills (home/skills/commit-message
and home/skills/pr-description), symlinked into Claude Code, Codex CLI,
and Cursor via home.nix like the existing smell skill. AGENTS.md now
points at the skills instead of duplicating the rules inline. Updates
verify.sh and docs (inventory.md, git-cheatsheet.md) to match, and fixes
the smell row's stale symlink-target list in inventory.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cursor reads ~/.cursor/rules/master-rules.md as always-on global
context, so wire it up the same way as the existing Claude/Codex/
opencode symlinks. Also fills in home/AGENTS.md with the behavioral
guidelines content and updates inventory/README docs plus verify.sh
to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@lakshyads05
lakshyads05 force-pushed the feature/agentic-engineering-specific branch from 41bc6ed to 3dd21fc Compare July 14, 2026 14:03
herdr worktree open infers its scope from the calling pane and
refuses (linked_worktree_source) when run from inside a linked
worktree instead of the bare-repo root, so wtnew silently failed to
attach a herdr session unless invoked from the root. Passing --cwd
with the already-resolved bare-repo root makes the scope explicit
regardless of which worktree wtnew is called from.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@lakshyads05
lakshyads05 force-pushed the feature/agentic-engineering-specific branch from ccd2a3b to 8b0a7d2 Compare July 14, 2026 19:46
Adds nvim-treesitter (main branch) with parsers for markdown plus
mainstream languages (go, java, c/cpp, rust, sql, python, js/ts, etc.),
render-markdown.nvim for in-editor markdown/code-block rendering, and
nvim-colorizer.lua for inline color swatches. Also adds the tree-sitter
CLI to home.nix, since nvim-treesitter's main branch shells out to it
to compile parsers.
Codifies two standing preferences into the shared agent rules: never
use em dashes, and never auto-add the agent's name as commit co-author.
git clone --bare mirrors origin's branches straight into refs/heads
with no tracking info, so any branch that existed on origin at clone
time silently skips git's normal upstream auto-setup on checkout.

wtnew now backfills missing upstreams after checking out an existing
branch, and the from-scratch setup recipe wipes the mirrored
refs/heads so future clones don't hit this at all.
@lakshyads05
lakshyads05 force-pushed the feature/agentic-engineering-specific branch from e3fbcc7 to 4f4a15d Compare July 15, 2026 13:46
…uidance

Fold in conditional rules for subagent use, a SOLID/GoF design gate on
large changes, and a pointer to the smell skill for pre-merge reviews.
… refs

The prior backfill only fired when refs/remotes/origin/<branch> already
existed locally, but git clone --bare never populates that namespace
(no remote.origin.fetch is configured), so branches mirrored straight
into refs/heads at clone time silently kept no upstream.

wtnew now configures remote.origin.fetch and fetches just that one
branch from origin before backfilling with set-upstream-to, and skips
cleanly if origin has no such branch.
Cursor CLI has no home-directory rules file - it only reads
.cursor/rules/, AGENTS.md, and CLAUDE.md from a project's own root, so
symlinking behavioral-guidelines.md into ~/.cursor/rules never took
effect. Documented the gap in cursor-cli-cheatsheet.md.
@lakshyads05
lakshyads05 force-pushed the feature/agentic-engineering-specific branch from 34dede2 to 931e60b Compare July 17, 2026 16:35
Previously the branch-exists check only looked at refs/heads/*, so a
branch that only existed on origin's remote-tracking ref fell through
to the "create fresh from base" path instead of tracking origin. Now
origin is queried directly via a targeted fetch first, and if the
local branch is absent but origin has it, the worktree is created
from origin/$branch so tracking is wired up automatically.
Loosen the ask-before-proceeding rule to only trigger on materially
divergent interpretations, and batch small plan decisions instead of
asking one by one. Add reviewer evaluation criteria (scale, efficiency,
data design, growth, product fit, robustness) to the architecture-plan
skill so plans are judged against explicit standards, plus a markdown
fallback when the Lavish skill is unavailable.
Previously wtnew errored out any time the target path already
existed. Now it checks whether the path is a registered worktree
of the bare repo and, if so, just (re)attaches a herdr session
instead of failing - so the same command opens an existing
worktree or creates a new one. Paths that exist but aren't
registered worktrees still error to avoid clobbering unrelated
directories.
Neogit hides line numbers by default and hardcodes wrap=false on
every window it opens, forcing horizontal scrolling to read long
diff lines. Enable line numbers via setup() and re-enable wrap on
NeogitStatus/DiffView/CommitView buffers, scheduled to run after
Neogit's own window setup so the override isn't clobbered.
@lakshyads05
lakshyads05 force-pushed the feature/agentic-engineering-specific branch from 5f33688 to 83f605e Compare August 13, 2026 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant